package com.qiaoba.module.system.converter;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qiaoba.module.system.entity.SysDictData;
import com.qiaoba.module.system.entity.SysDictType;
import com.qiaoba.module.system.entity.dto.SysDictDataDTO;
import com.qiaoba.module.system.entity.dto.SysDictTypeDTO;
import com.qiaoba.module.system.entity.param.SysDictDataParam;
import com.qiaoba.module.system.entity.param.SysDictTypeParam;

/**
 * 字典 类型转换
 *
 * @author ailanyin
 * @date 2023-09-09 18:19:58
 */
public class SysDictConverter {

    public static SysDictType dto2Entity(SysDictTypeDTO dto) {
        SysDictType sysDictType = new SysDictType();
        sysDictType.setDictId(dto.getDictId());
        sysDictType.setDictName(dto.getDictName());
        sysDictType.setDictType(dto.getDictType());
        sysDictType.setStatus(dto.getStatus());
        sysDictType.setRemark(dto.getRemark());
        return sysDictType;
    }

    public static SysDictData dto2Entity(SysDictDataDTO dto) {
        SysDictData sysDictData = new SysDictData();
        sysDictData.setDictCode(dto.getDictCode());
        sysDictData.setDictSort(dto.getDictSort());
        sysDictData.setDictLabel(dto.getDictLabel());
        sysDictData.setDictValue(dto.getDictValue());
        sysDictData.setDictType(dto.getDictType());
        sysDictData.setCssClass(dto.getCssClass());
        sysDictData.setListClass(dto.getListClass());
        sysDictData.setStatus(dto.getStatus());
        sysDictData.setRemark(dto.getRemark());
        return sysDictData;
    }

    public static QueryWrapper<SysDictType> param2Wrapper(SysDictTypeParam param) {
        QueryWrapper<SysDictType> wrapper = new QueryWrapper<>();
        wrapper.lambda()
                .orderByDesc(SysDictType::getCreateTime)
                .like(StrUtil.isNotBlank(param.getDictName()), SysDictType::getDictName, param.getDictName())
                .like(StrUtil.isNotBlank(param.getDictType()), SysDictType::getDictType, param.getDictType())
                .eq(StrUtil.isNotBlank(param.getStatus()), SysDictType::getStatus, param.getStatus());
        return wrapper;
    }

    public static QueryWrapper<SysDictData> param2Wrapper(SysDictDataParam param) {
        QueryWrapper<SysDictData> wrapper = new QueryWrapper<>();
        wrapper.lambda()
                .orderByAsc(SysDictData::getDictSort)
                .like(StrUtil.isNotBlank(param.getDictLabel()), SysDictData::getDictLabel, param.getDictLabel())
                .like(StrUtil.isNotBlank(param.getDictType()), SysDictData::getDictType, param.getDictType())
                .eq(StrUtil.isNotBlank(param.getStatus()), SysDictData::getStatus, param.getStatus());
        return wrapper;
    }
}
